export function generateAllCombinations(arrList) {
    let result = [];

    // 递归函数来生成所有的组合
    function combine(arr, index) {
        // 如果已经到了 arrList 的最后一个元素，直接返回
        if (index === arrList.length) {
            result.push(arr);
            return;
        }

        // 获取当前元素
        const currentElement = arrList[index];

        // 对于第一个矩阵（3x3），选择其中的一行
        if (Array.isArray(currentElement[0]) && currentElement.length === 3) {
            for (let row of currentElement) {
                combine([...arr, row], index + 1);
            }
        } 
        // 对于第二个元素（一维数组，只有一行）
        else if (Array.isArray(currentElement) && currentElement.length === 3) {
            // 只有一行，直接添加
            combine([...arr, currentElement], index + 1);
        }
        // 对于第三个矩阵（2x3），选择其中的一行
        else if (Array.isArray(currentElement[0]) && currentElement.length === 2) {
            for (let row of currentElement) {
                combine([...arr, row], index + 1);
            }
        }
    }

    // 开始递归拼接
    combine([], 0);

    return result;
}

// // 示例 arrList 数据
// const arrList = [
//     [[1, 0, 1],
//      [1, 1, 0],
//      [0, 1, 1]],   // 第一个元素是一个 3x3 的矩阵
//     [1, 0, 1],      // 第二个元素是一个 1x3 的一维数组
//     [[1, 1, 0],
//      [0, 1, 1]]     // 第三个元素是一个 2x3 的矩阵
// ];

// // 调用函数
// const allCombinations = generateAllCombinations(arrList);

// // 输出结果
// console.log(allCombinations);
// console.log("Total combinations:", allCombinations.length);
